"""
AI提示生成路由 - 基于大语言模型生成智能提示
"""
from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from typing import List, Optional, Dict
import json
import logging
import asyncio
from openai import AsyncOpenAI
from motor.motor_asyncio import AsyncIOMotorDatabase

logger = logging.getLogger(__name__)

router = APIRouter()

# MongoDB数据库依赖
async def get_database():
    """获取数据库连接 - 使用main.py中的全局mongodb_client"""
    from src.main import mongodb_client

    if mongodb_client is None:
        raise HTTPException(status_code=503, detail="Database not connected")

    return mongodb_client["ai_writing"]

class HintGenerationRequest(BaseModel):
    """提示生成请求模型"""
    topic: str
    purpose: str
    platform: Optional[str] = None

class BatchHintGenerationRequest(BaseModel):
    """批量提示生成请求模型"""
    topic: str
    purposes: List[str]
    platform: Optional[str] = None

class HintGenerationResponse(BaseModel):
    """提示生成响应模型"""
    hints: List[str]
    examples: List[str]
    tips: List[str]

async def get_available_model(db: AsyncIOMotorDatabase) -> Optional[Dict]:
    """
    获取可用的AI模型配置
    优先选择DeepSeek模型，其次是其他可用模型
    """
    try:
        # 优先查找DeepSeek模型
        model = await db.model_configs.find_one({
            "enabled": True,
            "provider": {"$regex": "deepseek", "$options": "i"}
        })

        if model:
            logger.info(f"使用DeepSeek模型: {model.get('name', 'unknown')}")
            return model

        # 如果没有DeepSeek，查找任何启用的模型
        model = await db.model_configs.find_one({"enabled": True})

        if model:
            logger.info(f"使用备选模型: {model.get('name', 'unknown')}")
            return model

        logger.warning("没有找到可用的AI模型配置")
        return None

    except Exception as e:
        logger.error(f"获取模型配置失败: {str(e)}")
        return None


async def generate_hints_with_ai(
    topic: str,
    purpose: str,
    platform: Optional[str],
    db: AsyncIOMotorDatabase
) -> Dict:
    """
    使用AI模型生成智能提示

    Args:
        topic: 创作主题
        purpose: 提示用途（audience/viewpoint/material/style/goal）
        platform: 目标平台
        db: 数据库连接

    Returns:
        包含hints、examples、tips的字典
    """
    try:
        # 获取可用的AI模型
        model_config = await get_available_model(db)

        if not model_config:
            logger.error("❌ 没有可用的AI模型配置")
            raise HTTPException(status_code=503, detail="No AI model configured. Please add a model in model configuration page.")

        # 构建提示词
        purpose_names = {
            "audience": "目标受众",
            "viewpoint": "核心观点",
            "material": "素材来源",
            "style": "写作风格",
            "goal": "创作目标"
        }

        purpose_cn = purpose_names.get(purpose, purpose)
        platform_text = f"，发布平台为{platform}" if platform else ""

        prompt = f"""你是一个专业的内容创作助手。请为以下创作主题提供{purpose_cn}方面的智能提示和建议。

创作主题：{topic}{platform_text}

请按照以下JSON格式返回结果：
{{
    "hints": ["提示1", "提示2", "提示3", "提示4", "提示5"],
    "examples": ["示例1", "示例2", "示例3", "示例4", "示例5"],
    "tips": ["💡 技巧1", "💡 技巧2", "💡 技巧3", "💡 技巧4"]
}}

要求：
1. hints（提示）：提供5个具体的、可操作的{purpose_cn}建议
2. examples（示例）：提供5个实际的例子或参考方向
3. tips（技巧）：提供3-4个关键的创作技巧，每个以"💡 "开头
4. 内容要具体、实用，避免空泛
5. 必须严格按照JSON格式返回，不要添加任何其他文字"""

        # 创建OpenAI客户端（兼容多种API）
        client = AsyncOpenAI(
            api_key=model_config.get("api_key"),
            base_url=model_config.get("api_base")
        )

        # 调用AI模型
        response = await client.chat.completions.create(
            model=model_config.get("model_name", "gpt-3.5-turbo"),
            messages=[
                {"role": "system", "content": "你是一个专业的内容创作助手，擅长为创作者提供有价值的建议和灵感。"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.7,
            max_tokens=1500
        )

        # 解析响应
        content = response.choices[0].message.content.strip()

        # 尝试解析JSON
        try:
            # 移除可能的markdown代码块标记
            if content.startswith("```"):
                content = content.split("```")[1]
                if content.startswith("json"):
                    content = content[4:]

            result = json.loads(content)

            # 验证结果格式
            if "hints" in result and "examples" in result and "tips" in result:
                logger.info(f"✅ AI生成提示成功: topic={topic}, purpose={purpose}")
                return result
            else:
                logger.error(f"❌ AI返回格式不完整: {result}")
                raise HTTPException(status_code=500, detail="AI response format invalid")

        except json.JSONDecodeError as e:
            logger.error(f"❌ JSON解析失败: {str(e)}, content={content}")
            raise HTTPException(status_code=500, detail=f"Failed to parse AI response: {str(e)}")

    except HTTPException:
        raise
    except Exception as e:
        logger.error(f"❌ AI生成提示失败: {str(e)}")
        import traceback
        logger.error(f"Traceback: {traceback.format_exc()}")
        raise HTTPException(status_code=500, detail=f"AI generation failed: {str(e)}")


@router.post("/generate-hints", response_model=HintGenerationResponse)
async def generate_hints(
    request: HintGenerationRequest,
    db: AsyncIOMotorDatabase = Depends(get_database)
):
    """
    生成动态提示内容 - 使用AI模型
    """
    try:
        # 使用AI模型生成提示
        hints_data = await generate_hints_with_ai(
            topic=request.topic,
            purpose=request.purpose,
            platform=request.platform,
            db=db
        )

        return HintGenerationResponse(**hints_data)

    except Exception as e:
        logger.error(f"❌ Failed to generate hints: {str(e)}")
        import traceback
        logger.error(f"Traceback: {traceback.format_exc()}")
        raise

@router.post("/generate-hints/batch", response_model=Dict[str, HintGenerationResponse])
async def generate_batch_hints(
    request: BatchHintGenerationRequest,
    db: AsyncIOMotorDatabase = Depends(get_database)
):
    """
    批量生成动态提示内容 - 使用AI模型并发处理
    """
    try:
        # 使用asyncio.gather并发处理多个purpose
        tasks = []
        for purpose in request.purposes:
            task = generate_hints_with_ai(
                topic=request.topic,
                purpose=purpose,
                platform=request.platform,
                db=db
            )
            tasks.append(task)

        # 并发执行所有任务
        results_list = await asyncio.gather(*tasks, return_exceptions=True)

        # 组装结果
        results = {}
        for i, purpose in enumerate(request.purposes):
            result_data = results_list[i]

            # 如果出现异常，抛出错误
            if isinstance(result_data, Exception):
                logger.error(f"❌ Purpose {purpose} failed: {str(result_data)}")
                raise result_data
            else:
                results[purpose] = HintGenerationResponse(**result_data)

        logger.info(f"批量生成完成: topic={request.topic}, purposes={len(request.purposes)}")
        return results

    except Exception as e:
        logger.error(f"❌ Failed to generate batch hints: {str(e)}")
        import traceback
        logger.error(f"Traceback: {traceback.format_exc()}")
        raise

def analyze_topic_type(topic: str) -> str:
    """分析主题类型"""
    tech_keywords = ['技术', '科技', 'AI', '人工智能', '芯片', '算法', '模型', '系统', '软件', '硬件', '云计算', '大数据', '区块链', '5G', '物联网']
    business_keywords = ['商业', '经济', '市场', '投资', '创业', '管理', '战略', '营销', '品牌', '财务', '股票', '基金', '并购', '上市']
    life_keywords = ['生活', '健康', '美食', '旅行', '情感', '家庭', '教育', '职场', '成长', '心理', '运动', '娱乐', '时尚']
    culture_keywords = ['文化', '艺术', '历史', '哲学', '文学', '电影', '音乐', '设计', '摄影', '传统', '创意', '美学']

    topic_lower = topic.lower()

    if any(kw in topic for kw in tech_keywords):
        return 'tech'
    elif any(kw in topic for kw in business_keywords):
        return 'business'
    elif any(kw in topic for kw in life_keywords):
        return 'life'
    elif any(kw in topic for kw in culture_keywords):
        return 'culture'
    else:
        return 'general'

def extract_keywords(topic: str) -> List[str]:
    """
    从主题中提取关键词
    """
    import re
    # 移除常见的连接词
    topic_clean = re.sub(r'[的了在是和与及或等]', ' ', topic)
    # 分词
    words = [w.strip() for w in topic_clean.split() if len(w.strip()) >= 2]

    # 如果没有提取到词，返回原主题
    if not words:
        words = [topic]

    return words[:3]  # 返回前3个关键词

def generate_hints_for_topic(topic: str, purpose: str, platform: Optional[str] = None) -> Dict:
    """
    根据主题和目的生成智能提示
    """
    keywords = extract_keywords(topic)
    topic_type = analyze_topic_type(topic)

    # 根据主题类型调整提示风格
    if topic_type == 'tech':
        return generate_tech_hints(topic, purpose, keywords)
    elif topic_type == 'business':
        return generate_business_hints(topic, purpose, keywords)
    elif topic_type == 'life':
        return generate_life_hints(topic, purpose, keywords)
    elif topic_type == 'culture':
        return generate_culture_hints(topic, purpose, keywords)
    else:
        return generate_general_hints(topic, purpose, keywords)

def generate_tech_hints(topic: str, purpose: str, keywords: List[str]) -> Dict:
    """生成技术类提示"""
    if purpose == 'audience':
        return {
            "hints": [
                f"对{keywords[0] if keywords else topic}感兴趣的技术专家",
                f"关注{topic}发展的行业从业者",
                f"需要了解{keywords[0] if keywords else topic}的决策者",
                f"研究{topic}的学者和学生",
                "对前沿技术有好奇心的普通读者"
            ],
            "examples": [
                f"在{keywords[0] if keywords else '技术'}领域工作3年以上的工程师",
                f"关注{topic}产业链的投资人",
                f"负责{keywords[0] if keywords else '技术'}相关项目的管理者",
                f"对{topic}有实际需求的企业用户",
                "希望了解技术趋势的产品经理"
            ],
            "tips": [
                f"💡 考虑{topic}的技术门槛和专业性",
                f"💡 分析不同群体对{keywords[0] if keywords else topic}的关注点",
                f"💡 思考{topic}能为读者带来什么价值",
                "💡 区分专业人士和普通读者的需求差异"
            ]
        }

    elif purpose == 'viewpoint':
        return {
            "hints": [
                f"{topic}的技术突破与创新价值",
                f"{keywords[0] if keywords else topic}对行业的颠覆性影响",
                f"从技术架构角度分析{topic}",
                f"{topic}的技术瓶颈与解决方案",
                "国内外技术发展对比分析"
            ],
            "examples": [
                f"{topic}代表了技术发展的新方向",
                f"深入剖析{keywords[0] if keywords else topic}的底层原理",
                f"{topic}将改变现有技术格局",
                f"从工程实践看{topic}的可行性",
                "技术创新背后的商业逻辑"
            ],
            "tips": [
                f"💡 结合{topic}的最新技术进展",
                f"💡 提出对{keywords[0] if keywords else topic}的独特技术见解",
                f"💡 用数据和案例支撑技术观点",
                "💡 平衡技术深度与可读性"
            ]
        }

    elif purpose == 'material':
        return {
            "hints": [
                f"{topic}的技术白皮书和论文",
                f"{keywords[0] if keywords else topic}的开源项目和代码",
                "技术大会和峰会的分享",
                "权威机构的技术报告",
                "成功案例和最佳实践"
            ],
            "examples": [
                f"某大厂在{topic}领域的技术方案",
                f"关于{keywords[0] if keywords else topic}的学术研究成果",
                f"{topic}相关的开源社区动态",
                f"技术领袖对{keywords[0] if keywords else topic}的观点",
                "实际项目中的应用经验"
            ],
            "tips": [
                f"💡 收集{topic}的权威技术资料",
                f"💡 关注{keywords[0] if keywords else topic}的开源生态",
                f"💡 追踪最新的技术论文和专利",
                "💡 结合实际案例验证技术可行性"
            ]
        }

    elif purpose == 'style':
        return {
            "hints": [
                f"技术深度分析风格",
                f"代码示例驱动风格",
                f"问题解决导向风格",
                f"架构设计思维风格",
                "通俗技术科普风格"
            ],
            "examples": [
                f"用技术架构图解释{topic}",
                f"通过代码示例展示{keywords[0] if keywords else topic}",
                f"以问题-解决方案的形式组织内容",
                f"用类比方式解释复杂技术概念",
                "结合实战经验分享技术心得"
            ],
            "tips": [
                f"💡 根据{topic}的技术复杂度选择风格",
                f"💡 考虑读者的技术背景",
                f"💡 平衡理论深度与实用性",
                "💡 适当使用图表和代码示例"
            ]
        }

    else:  # goal
        return {
            "hints": [
                f"让读者理解{topic}的技术原理",
                f"帮助读者掌握{keywords[0] if keywords else topic}的实践方法",
                f"启发技术思维和创新意识",
                f"提供可落地的技术方案",
                "建立技术知识体系"
            ],
            "examples": [
                f"读者能够理解{topic}的核心技术",
                f"掌握{keywords[0] if keywords else topic}的基本开发技能",
                f"获得解决实际问题的思路",
                f"形成对{keywords[0] if keywords else topic}的系统认识",
                "激发进一步学习的兴趣"
            ],
            "tips": [
                f"💡 明确{topic}的学习路径",
                f"💡 设定可达成的技术目标",
                f"💡 提供实践指导和资源链接",
                "💡 鼓励读者动手实践"
            ]
        }

def generate_business_hints(topic: str, purpose: str, keywords: List[str]) -> Dict:
    """生成商业类提示"""
    if purpose == 'audience':
        return {
            "hints": [
                f"关注{topic}的企业决策者",
                f"寻找{keywords[0] if keywords else '商机'}的创业者",
                "投资机构和分析师",
                "商业战略研究者",
                "中高层管理人员"
            ],
            "examples": [
                f"在{keywords[0] if keywords else '相关'}行业的企业高管",
                "寻求转型机会的传统企业",
                "关注新商业模式的投资人",
                "商学院师生和研究人员",
                "有创业想法的职场人士"
            ],
            "tips": [
                f"💡 考虑{topic}的商业价值",
                "💡 分析不同角色的决策需求",
                "💡 关注实际商业应用场景"
            ]
        }

    elif purpose == 'viewpoint':
        return {
            "hints": [
                f"{topic}的商业模式创新",
                f"市场机会与挑战分析",
                f"竞争格局与战略定位",
                f"投资价值与风险评估",
                "产业链价值重构"
            ],
            "examples": [
                f"{topic}将重新定义行业规则",
                f"从商业本质看{keywords[0] if keywords else topic}",
                "资本市场对此的态度转变",
                "头部企业的战略布局",
                "新旧模式的对比分析"
            ],
            "tips": [
                f"💡 用商业逻辑分析{topic}",
                "💡 关注市场数据和趋势",
                "💡 提供可行的商业建议"
            ]
        }

    elif purpose == 'material':
        return {
            "hints": [
                "行业报告和市场数据",
                "成功企业案例分析",
                "融资事件和并购信息",
                "政策法规和行业标准",
                "竞品分析和用户调研"
            ],
            "examples": [
                f"某独角兽企业在{topic}的布局",
                "相关市场规模和增长预测",
                "最新的融资和IPO动态",
                "监管政策的影响分析",
                "用户需求和痛点调研"
            ],
            "tips": [
                f"💡 收集{topic}的市场数据",
                "💡 关注头部企业动态",
                "💡 分析商业成功要素"
            ]
        }

    elif purpose == 'style':
        return {
            "hints": [
                "数据驱动分析风格",
                "案例研究风格",
                "战略思维风格",
                "实战经验分享风格",
                "商业故事叙述风格"
            ],
            "examples": [
                "用数据图表展示市场趋势",
                "通过案例剖析成功要素",
                "以战略框架组织内容",
                "分享实际操盘经验",
                "讲述创业者的商业故事"
            ],
            "tips": [
                f"💡 让{topic}更有说服力",
                "💡 平衡理论与实践",
                "💡 注重商业洞察的提炼"
            ]
        }

    else:  # goal
        return {
            "hints": [
                "提供商业决策参考",
                "启发商业创新思维",
                "分享实战经验教训",
                "建立商业分析框架",
                "预测发展趋势"
            ],
            "examples": [
                f"帮助理解{topic}的商业逻辑",
                "获得可执行的商业策略",
                "避免常见的商业陷阱",
                "建立系统的商业思维",
                "把握市场机会窗口"
            ],
            "tips": [
                f"💡 提供实用的商业建议",
                "💡 强调投资回报价值",
                "💡 关注落地可行性"
            ]
        }

def generate_life_hints(topic: str, purpose: str, keywords: List[str]) -> Dict:
    """生成生活类提示"""
    if purpose == 'audience':
        return {
            "hints": [
                f"关注{keywords[0] if keywords else '生活品质'}的都市白领",
                "追求健康生活的年轻人",
                "重视家庭教育的父母",
                "寻求生活平衡的职场人",
                "对生活有品质追求的中产阶级"
            ],
            "examples": [
                "25-40岁的都市职场人群",
                "有一定消费能力的年轻家庭",
                "关注身心健康的现代女性",
                "追求生活仪式感的90后",
                "希望提升生活品质的中年群体"
            ],
            "tips": [
                f"💡 贴近{topic}的日常场景",
                "💡 考虑不同人生阶段的需求",
                "💡 注重实用性和可操作性"
            ]
        }

    elif purpose == 'viewpoint':
        return {
            "hints": [
                f"{topic}与现代生活方式",
                "生活理念的转变与升级",
                "平衡工作与生活的智慧",
                "消费观念的进化",
                "幸福感的来源探讨"
            ],
            "examples": [
                f"{topic}让生活更有质感",
                "重新定义美好生活的标准",
                "从细节处提升生活品质",
                "慢下来，享受生活的美好",
                "极简主义的生活哲学"
            ],
            "tips": [
                f"💡 引发对{topic}的共鸣",
                "💡 传递积极的生活态度",
                "💡 提供实际的改善建议"
            ]
        }

    elif purpose == 'material':
        return {
            "hints": [
                "真实的生活案例",
                "专家建议和科学依据",
                "用户体验和口碑",
                "相关产品和服务推荐",
                "生活小技巧和窍门"
            ],
            "examples": [
                f"某博主的{topic}经验分享",
                "营养师/心理咨询师的专业建议",
                "用户的真实反馈和评价",
                "性价比高的相关产品",
                "简单易行的生活妙招"
            ],
            "tips": [
                f"💡 收集{topic}的实用信息",
                "💡 注重内容的真实性",
                "💡 提供可验证的效果"
            ]
        }

    elif purpose == 'style':
        return {
            "hints": [
                "温暖治愈风格",
                "轻松幽默风格",
                "实用指南风格",
                "个人经验分享风格",
                "生活美学风格"
            ],
            "examples": [
                "用温暖的文字记录生活",
                "幽默地调侃日常趣事",
                "step by step的操作指南",
                "真诚分享个人成长经历",
                "发现生活中的小确幸"
            ],
            "tips": [
                f"💡 让{topic}更贴近生活",
                "💡 使用接地气的语言",
                "💡 营造轻松愉快的阅读体验"
            ]
        }

    else:  # goal
        return {
            "hints": [
                "改善生活品质",
                "获得实用建议",
                "找到情感共鸣",
                "建立健康习惯",
                "提升幸福感"
            ],
            "examples": [
                f"学会更好地处理{topic}",
                "获得立即可用的生活技巧",
                "感受到温暖和力量",
                "养成良好的生活习惯",
                "找到生活的意义和价值"
            ],
            "tips": [
                f"💡 提供改善{topic}的具体方法",
                "💡 注重情感价值的传递",
                "💡 鼓励积极的生活改变"
            ]
        }

def generate_culture_hints(topic: str, purpose: str, keywords: List[str]) -> Dict:
    """生成文化类提示"""
    if purpose == 'audience':
        return {
            "hints": [
                f"对{keywords[0] if keywords else '文化'}感兴趣的知识分子",
                "文艺爱好者和创作者",
                "大学生和研究生群体",
                "文化产业从业者",
                "追求精神生活的读者"
            ],
            "examples": [
                "文学艺术专业的师生",
                "独立思考的青年群体",
                "文化机构和媒体工作者",
                "有一定文化素养的中产阶级",
                "对传统文化有认同感的华人"
            ],
            "tips": [
                f"💡 考虑{topic}的文化深度",
                "💡 尊重不同的文化背景",
                "💡 注重思想性和艺术性"
            ]
        }

    elif purpose == 'viewpoint':
        return {
            "hints": [
                f"{topic}的文化价值解读",
                "传统与现代的对话",
                "跨文化视角的比较",
                "文化现象的深层分析",
                "美学价值的探讨"
            ],
            "examples": [
                f"{topic}承载的文化记忆",
                "从历史脉络看当代意义",
                "东西方文化的碰撞与融合",
                "解构流行文化现象",
                "重新发现传统之美"
            ],
            "tips": [
                f"💡 挖掘{topic}的文化内涵",
                "💡 提供独特的文化视角",
                "💡 引发深层次的思考"
            ]
        }

    elif purpose == 'material':
        return {
            "hints": [
                "经典作品和文献",
                "学者观点和评论",
                "历史资料和档案",
                "艺术作品赏析",
                "文化活动和展览"
            ],
            "examples": [
                f"关于{topic}的学术研究",
                "名家的相关论述",
                "珍贵的历史文献",
                "代表性艺术作品",
                "重要文化事件回顾"
            ],
            "tips": [
                f"💡 引用{topic}的权威资料",
                "💡 注重资料的学术性",
                "💡 平衡专业性与可读性"
            ]
        }

    elif purpose == 'style':
        return {
            "hints": [
                "学术研究风格",
                "文学叙事风格",
                "评论批判风格",
                "散文随笔风格",
                "文化普及风格"
            ],
            "examples": [
                "严谨的学术论述",
                "优美的文学语言",
                "犀利的文化批评",
                "随性的散文笔触",
                "通俗的文化科普"
            ],
            "tips": [
                f"💡 匹配{topic}的文化特质",
                "💡 运用恰当的文学修辞",
                "💡 保持文化品位"
            ]
        }

    else:  # goal
        return {
            "hints": [
                "传播文化价值",
                "启发文化思考",
                "提升审美能力",
                "增进文化认同",
                "促进文化创新"
            ],
            "examples": [
                f"理解{topic}的文化意义",
                "获得美的享受和感动",
                "形成独立的文化判断",
                "增强文化自信",
                "激发创作灵感"
            ],
            "tips": [
                f"💡 传递{topic}的文化精髓",
                "💡 培养文化素养",
                "💡 推动文化传承与创新"
            ]
        }

def generate_general_hints(topic: str, purpose: str, keywords: List[str]) -> Dict:
    """生成通用类提示"""
    # 默认通用提示
    if purpose == 'audience':
        return {
            "hints": [
                f"对{topic}感兴趣的读者",
                f"希望了解{keywords[0] if keywords else topic}的人群",
                f"相关领域的从业者",
                f"有学习需求的学生",
                "追求知识的终身学习者"
            ],
            "examples": [
                f"初次接触{topic}的新手",
                f"在{keywords[0] if keywords else '相关'}领域有经验的专业人士",
                f"对{topic}有实际需求的用户",
                "希望拓展知识面的读者",
                "寻找灵感的创作者"
            ],
            "tips": [
                f"💡 明确{topic}的受众定位",
                f"💡 考虑读者的知识背景",
                f"💡 平衡专业性与通俗性"
            ]
        }

    elif purpose == 'viewpoint':
        return {
            "hints": [
                f"{topic}的核心价值",
                f"多角度分析{keywords[0] if keywords else topic}",
                f"发展趋势与前景",
                f"问题与解决方案",
                "创新与突破点"
            ],
            "examples": [
                f"{topic}的重要意义",
                f"深入剖析{keywords[0] if keywords else topic}本质",
                f"未来发展的可能性",
                f"面临的挑战与机遇",
                "独特的见解和思考"
            ],
            "tips": [
                f"💡 提出对{topic}的独特见解",
                f"💡 用事实和逻辑支撑观点",
                f"💡 避免泛泛而谈"
            ]
        }

    elif purpose == 'material':
        return {
            "hints": [
                f"{topic}的背景资料",
                f"相关案例和实例",
                f"数据和统计信息",
                f"专家观点和评论",
                "参考文献和资源"
            ],
            "examples": [
                f"关于{topic}的研究报告",
                f"{keywords[0] if keywords else topic}的成功案例",
                f"相关数据和图表",
                f"权威机构的观点",
                "推荐阅读和学习资源"
            ],
            "tips": [
                f"💡 收集{topic}的可靠资料",
                f"💡 注重信息的准确性",
                f"💡 提供多元化的素材"
            ]
        }

    elif purpose == 'style':
        return {
            "hints": [
                "清晰明了风格",
                "故事叙述风格",
                "问答互动风格",
                "总分总结构风格",
                "图文并茂风格"
            ],
            "examples": [
                "用简洁的语言说明",
                "通过故事引入主题",
                "设置问题引发思考",
                "先总述后分述再总结",
                "配合图表增强理解"
            ],
            "tips": [
                f"💡 选择适合{topic}的表达方式",
                f"💡 保持风格的一致性",
                f"💡 注重阅读体验"
            ]
        }

    else:  # goal
        return {
            "hints": [
                f"增进对{topic}的理解",
                f"获得实用知识",
                f"激发思考和讨论",
                f"提供行动指南",
                "拓展视野和认知"
            ],
            "examples": [
                f"掌握{topic}的基本概念",
                f"学会应用{keywords[0] if keywords else '相关知识'}",
                f"形成自己的观点",
                f"知道下一步该做什么",
                "获得新的启发"
            ],
            "tips": [
                f"💡 明确{topic}的价值主张",
                f"💡 设定清晰的学习目标",
                f"💡 提供可操作的建议"
            ]
        }

def get_fallback_hints(topic: str, purpose: str) -> HintGenerationResponse:
    """
    获取降级提示（当AI生成失败时）
    """
    return HintGenerationResponse(
        hints=[
            f"思考{topic}的核心要素",
            f"分析{topic}的关键问题",
            f"探讨{topic}的发展方向",
            f"理解{topic}的价值所在"
        ],
        examples=[
            f"关于{topic}的具体案例",
            f"{topic}在实践中的应用",
            f"{topic}带来的改变",
            f"{topic}的成功经验"
        ],
        tips=[
            f"💡 深入了解{topic}的背景",
            f"💡 收集{topic}的相关资料",
            f"💡 形成对{topic}的独特见解"
        ]
    )

@router.options("/generate-hints")
async def options_generate_hints():
    """
    处理OPTIONS请求（CORS预检）
    """
    return {"message": "OK"}

@router.options("/generate-hints/batch")
async def options_generate_batch_hints():
    """
    处理OPTIONS请求（CORS预检）
    """
    return {"message": "OK"}